package com.tjetc.reflect;

import java.lang.reflect.Field;
import java.lang.reflect.Method;

public class _11MethodMethod {
    public static void main(String[] args) throws Exception{
        /*
        1.getModifiers:以int形式返回修饰符
        [说明：默认修饰符是0,public是1,private是2,protected是4,
        static是8,final是16]
        2.getReturnType:以Class形式获取返回类型
        3.getName:返回方法名
        4.getParameterTypes:以Class[]返回参数类型数组
         */
        Class cls = Class.forName("com.tjetc.reflect._1Cat");
        Object o = cls.newInstance();

        Method[] methods = cls.getDeclaredMethods();
        for (Method method : methods) {
            System.out.println("-------------方法相关------------");
            System.out.println("方法名：" + method.getName()
                               + "，方法返回值类型：" + method.getReturnType()
                               + "，方法的修饰符：" + method.getModifiers());
            System.out.println("-------------参数相关------------");
            Class<?>[] parameterTypes = method.getParameterTypes();
            for (Class<?> parameterType : parameterTypes) {
                System.out.println(parameterType);
            }
        }
        // 只有静态方法才可以传null
        Method method = cls.getMethod("f2");
        method.invoke(null);


    }
}
